import { getAction, postAction } from '../controller';

export interface PatientLoginReq {
  /**
   * 地址
   */
  address?: string
  /**
   * 患者年龄
   */
  age?: number
  /**
   * 证件有效结束时间
   */
  end?: string
  /**
   * 特征码，人脸注册的时候使用
   */
  featureCode?: string
  /**
   * 身份证号
   */
  idCard?: string
  /**
   * 证件类型
   */
  idCardType?: number
  /**
   * 图像，人脸注册，登 录的时候使用
   */
  image?: string
  numberNo?: string
  /**
   * 患者名称
   */
  patientName?: string
  /**
   * 患者性别
   */
  sex?: number
  /**
   * 证件有效开始时间
   */
  start?: string
  /**
   * 电话号码
   */
  telephone?: string
  type: number
}

export interface PatientLoginRes {
  /**
   * 访问令牌
   */
  accessToken?: string
  /**
   * 过期时间
   */
  expiresTime?: string
  /**
   * 登录类型
   */
  logType?: number
  /**
   * 姓名
   */
  name?: string
  /**
   * 刷新令牌
   */
  refreshToken?: string
  /**
   * 用户编号
   */
  userId?: number
}

export interface UserInfo extends PatientLoginRes {
  sex: number
  address?: string
  age?: number
  idCard?: string
  image?: string
  patientCode?: string
  patientId?: number
  patientName?: string
  telephone?: string
  userId?: number
}

export interface HospitalInfo {
  bedNumber: number
  createTime: number
  detailAddress: string
  detailIntroduce: string
  expireDate: number
  hospitalCode: string
  hospitalName: string
  id: number
  logoInfo: string
  registerNumber: string
  rtmp: string
  serialNumber: string
}

export interface DictDto {
  value: string
  cssClass: string
  dictType: string
  label: string
  colorType: string
}

export const CommonApi = {
  /**
   * 患者登录
   * @param params
   * @returns
   */
  onPatientLogin: (params: PatientLoginReq) => postAction<PatientLoginRes>('/system/patient/auth/patientLogin', params),

  /**
   * 获取用户信息
   */
  getPatientInfo: () => postAction<UserInfo>('/system/patient/auth/getPatientInfoOnDevice'),

  /**
   * 退出登录
   */
  onAuthLogout: (logType: number) => postAction('/system/patient/auth/exitPatientLogin', { logType }),

  /**
   * 获取字典
   */
  getDictTree: () => getAction<DictDto[]>('system/dict-data/simple-list', null, {
    silentLogin: true
  }),

  /**
   * 获取医院信息
   */
  getHospitalInfo: () => getAction<HospitalInfo>('healthcare/hospital-info/get', { id: 1 }, {
    silentLogin: true
  })
};
